package com.naodong.shenluntiku.mvp.view.activity;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.view.View;

import com.naodong.shenluntiku.R;
import com.naodong.shenluntiku.di.component.DaggerCollectTypeComponent;
import com.naodong.shenluntiku.di.module.CollectTypeModule;
import com.naodong.shenluntiku.mvp.contract.CollectTypeContract;
import com.naodong.shenluntiku.mvp.model.bean.CollectType;
import com.naodong.shenluntiku.mvp.model.bean.SupportFragmentWrap;
import com.naodong.shenluntiku.mvp.presenter.CollectTypePresenter;
import com.naodong.shenluntiku.mvp.view.adapter.LittleFragmentAdapter;
import com.naodong.shenluntiku.mvp.view.fragment.CollectListFragment;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import me.shingohu.man.base.BaseMVPActivity;
import me.shingohu.man.di.component.AppComponent;


/**
 * 通过Template生成对应页面的MVP和Dagger代码,请注意输入框中输入的名字必须相同
 * 由于每个项目包结构都不一定相同,所以每生成一个文件需要自己导入import包名,可以在设置中设置自动导入包名
 * 请在对应包下按以下顺序生成对应代码,Contract->Model->Presenter->Activity->Module->Component
 * 因为生成Activity时,Module和Component还没生成,但是Activity中有它们的引用,所以会报错,但是不用理会
 * 继续将Module和Component生成完后,编译一下项目再回到Activity,按提示修改一个方法名即可
 * 如果想生成Fragment的相关文件,则将上面构建顺序中的Activity换为Fragment,并将Component中inject方法的参数改为此Fragment
 */

/**
 * Created by hujie on 17/5/22.
 */

public class CollectActivity extends BaseMVPActivity<CollectTypePresenter> implements CollectTypeContract.View {


    @BindView(R.id.tabLayout)
    TabLayout tabLayout;
    @BindView(R.id.viewPager)
    ViewPager viewPager;

    LittleFragmentAdapter pagerAdapter;


    @Override
    public void setupActivityComponent(AppComponent appComponent) {
        DaggerCollectTypeComponent
                .builder()
                .appComponent(appComponent)
                .collectTypeModule(new CollectTypeModule(this)) //请将CollectModule()第一个首字母改为小写
                .build()
                .inject(this);
    }

    @Override
    protected void onCreateInit(Bundle savedInstanceState) {
        initViewPager();
        mPresenter.requestCollectTypes();
    }


    private void initViewPager() {

        pagerAdapter = new LittleFragmentAdapter(getSupportFragmentManager());
        viewPager.setAdapter(pagerAdapter);
        tabLayout.setupWithViewPager(viewPager);
    }

    private void setTabLayout(List<CollectType> collectTypes) {
        tabLayout.setVisibility(View.VISIBLE);
        List<SupportFragmentWrap> fragmentWrapList = new ArrayList<>();
        for (CollectType collectType : collectTypes) {
            TabLayout.Tab tabItem = tabLayout.newTab();
            tabItem.setTag(collectType.getFavourTypeId());
            tabItem.setText(collectType.getFavourTypeName());
            tabLayout.addTab(tabItem);
            fragmentWrapList.add(new SupportFragmentWrap(collectType.getFavourTypeName(), CollectListFragment.getInstance(collectType)));
        }

        pagerAdapter.setFragments(fragmentWrapList);
        pagerAdapter.notifyDataSetChanged();

    }

    @Override
    protected int layoutId() {
        return R.layout.a_collect;
    }

    @Override
    public void showMessage(String msg) {

    }

    @Override
    public void onRequesrStart() {
        progressHudUtil.showProgressHud();
    }

    @Override
    public void onRequestFinish() {
        progressHudUtil.dismissProgressHud();
    }


    @Override
    public void onCollectTypes(List<CollectType> collectTypes) {
        setTabLayout(collectTypes);
    }







}